home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / gcc / ixemlsdk.lha / include / machine / param.h < prev    next >
C/C++ Source or Header  |  1996-03-13  |  6KB  |  175 lines

  1. /*
  2.  * Copyright (c) 1988 University of Utah.
  3.  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
  4.  * All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * the Systems Programming Group of the University of Utah Computer
  8.  * Science Department.
  9.  *
  10.  * Redistribution and use in source and binary forms, with or without
  11.  * modification, are permitted provided that the following conditions
  12.  * are met:
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer.
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in the
  17.  *    documentation and/or other materials provided with the distribution.
  18.  * 3. All advertising materials mentioning features or use of this software
  19.  *    must display the following acknowledgement:
  20.  *    This product includes software developed by the University of
  21.  *    California, Berkeley and its contributors.
  22.  * 4. Neither the name of the University nor the names of its contributors
  23.  *    may be used to endorse or promote products derived from this software
  24.  *    without specific prior written permission.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  27.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  29.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  30.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  32.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  33.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  34.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36.  * SUCH DAMAGE.
  37.  *
  38.  * from: Utah $Hdr: machparam.h 1.11 89/08/14$
  39.  *
  40.  *    @(#)param.h    7.8 (Berkeley) 6/28/91
  41.  */
  42.  
  43. #ifndef _MACHINE_PARAM_H
  44. #define _MACHINE_PARAM_H
  45. /*
  46.  * Machine dependent constants for amiga
  47.  */
  48. #define    MACHINE "amiga"
  49.  
  50. /*
  51.  * Round p (pointer or byte index) up to a correctly-aligned value
  52.  * for all data types (int, long, ...).   The result is u_int and
  53.  * must be cast to any desired pointer type.
  54.  */
  55. #define    ALIGN(p)    (((u_int)(p) + (sizeof(int) - 1)) &~ (sizeof(int) - 1))
  56.  
  57. #define    NBPG        4096        /* bytes/page */
  58. #define    PGOFSET        (NBPG-1)    /* byte offset into page */
  59. #define    PGSHIFT        12        /* LOG2(NBPG) */
  60. #define    NPTEPG        (NBPG/(sizeof (struct pte)))
  61.  
  62. #define NBSEG        (1024*NBPG)    /* bytes/segment */
  63. #define    SEGOFSET    (NBSEG-1)    /* byte offset into segment */
  64. #define    SEGSHIFT    22        /* LOG2(NBSEG) */
  65.  
  66. #define    KERNBASE    0x00000000    /* start of kernel virtual */
  67. #define    BTOPKERNBASE    ((u_long)KERNBASE >> PGSHIFT)
  68.  
  69. #define    DEV_BSIZE    512
  70. #define    DEV_BSHIFT    9        /* log2(DEV_BSIZE) */
  71. #define BLKDEV_IOSIZE    2048
  72. #define    MAXPHYS        (64 * 1024)    /* max raw I/O transfer size */
  73.  
  74. #define    CLSIZE        1
  75. #define    CLSIZELOG2    0
  76.  
  77. /* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */
  78. #define    SSIZE        1        /* initial stack size/NBPG */
  79. #define    SINCR        1        /* increment of stack/NBPG */
  80.  
  81. #define    UPAGES        3        /* pages of u-area */
  82.  
  83. /*
  84.  * Constants related to network buffer management.
  85.  * MCLBYTES must be no larger than CLBYTES (the software page size), and,
  86.  * on machines that exchange pages of input or output buffers with mbuf
  87.  * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
  88.  * of the hardware page size.
  89.  */
  90. #define    MSIZE        128        /* size of an mbuf */
  91. #define    MCLBYTES    1024
  92. #define    MCLSHIFT    10
  93. #define    MCLOFSET    (MCLBYTES - 1)
  94. #ifndef NMBCLUSTERS
  95. #ifdef GATEWAY
  96. #define    NMBCLUSTERS    512        /* map size, max cluster allocation */
  97. #else
  98. #define    NMBCLUSTERS    256        /* map size, max cluster allocation */
  99. #endif
  100. #endif
  101.  
  102. /*
  103.  * Size of kernel malloc arena in CLBYTES-sized logical pages
  104.  */ 
  105. #ifndef NKMEMCLUSTERS
  106. #define    NKMEMCLUSTERS    (2048*1024/CLBYTES)
  107. #endif
  108.  
  109. /* pages ("clicks") (4096 bytes) to disk blocks */
  110. #define    ctod(x)    ((x)<<(PGSHIFT-DEV_BSHIFT))
  111. #define    dtoc(x)    ((x)>>(PGSHIFT-DEV_BSHIFT))
  112. #define    dtob(x)    ((x)<<DEV_BSHIFT)
  113.  
  114. /* pages to bytes */
  115. #define    ctob(x)    ((x)<<PGSHIFT)
  116.  
  117. /* bytes to pages */
  118. #define    btoc(x)    (((unsigned)(x)+(NBPG-1))>>PGSHIFT)
  119.  
  120. #define    btodb(bytes)             /* calculates (bytes / DEV_BSIZE) */ \
  121.     ((unsigned)(bytes) >> DEV_BSHIFT)
  122. #define    dbtob(db)            /* calculates (db * DEV_BSIZE) */ \
  123.     ((unsigned)(db) << DEV_BSHIFT)
  124.  
  125. /*
  126.  * Map a ``block device block'' to a file system block.
  127.  * This should be device dependent, and should use the bsize
  128.  * field from the disk label.
  129.  * For now though just use DEV_BSIZE.
  130.  */
  131. #define    bdbtofsb(bn)    ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
  132.  
  133. /*
  134.  * Mach derived conversion macros
  135.  */
  136. #define hp300_round_seg(x)    ((((unsigned)(x)) + NBSEG - 1) & ~(NBSEG-1))
  137. #define hp300_trunc_seg(x)    ((unsigned)(x) & ~(NBSEG-1))
  138. #define hp300_round_page(x)    ((((unsigned)(x)) + NBPG - 1) & ~(NBPG-1))
  139. #define hp300_trunc_page(x)    ((unsigned)(x) & ~(NBPG-1))
  140. #define hp300_btos(x)        ((unsigned)(x) >> SEGSHIFT)
  141. #define hp300_stob(x)        ((unsigned)(x) << SEGSHIFT)
  142. #define hp300_btop(x)        ((unsigned)(x) >> PGSHIFT)
  143. #define hp300_ptob(x)        ((unsigned)(x) << PGSHIFT)
  144.  
  145. #if 0
  146. #define splsoftclock()  spl1()
  147. #define splnet()        spl1()
  148. #define splbio()        spl5()
  149. #define splimp()        spl5()
  150. #define spltty()        spl5()
  151. #define splclock()      spl6()
  152. #define splvm()         spl6()
  153. #define splhigh()       spl7()
  154. #define splsched()      spl7()
  155.  
  156. /* watch out for side effects */
  157. #define splx(s)         (s & PSL_IPL ? _spl(s) : spl0())
  158. #endif
  159.  
  160. #ifdef KERNEL
  161. #ifndef LOCORE
  162. #ifndef __EXTERN
  163. #define __EXTERN extern
  164. #endif
  165. __EXTERN int    cpuspeed;
  166. #undef __EXTERN
  167. #define    DELAY(n)    { register int N = cpuspeed * (n); while (--N > 0); }
  168. #endif
  169.  
  170. #else
  171. #define    DELAY(n)    { register int N = (n); while (--N > 0); }
  172. #endif
  173.  
  174. #endif /* _MACHINE_PARAM_H */
  175.